/**
 * @Author       : Hejh(3010733382@qq.com)
 * @Version      : V1.0
 * @Date         : 2024-03-19 14:53:45
 * @Description  : 发送邮箱验证码的工具类型
 */

const nodemailer = require('nodemailer') //引入模块

// 根据数据库的配置的不同初始化配置
const emailOption = {
  //node_modules/nodemailer/lib/well-known/services.json  查看相关的配置，如果使用qq邮箱，就查看qq邮箱的相关配置
  host: 'smtp.163.com',
  service: '163', //类型qq邮箱
  port: 465,
  secure: true, // true for 465, false for other ports
  auth: {
    user: '18390213930@163.com', // 发送方的邮箱
    pass: 'KSRUPPGLSYBKWWJT' // smtp 的授权码
  }
}

let transporter = nodemailer.createTransport(emailOption)
//pass 不是邮箱账户的密码而是stmp的授权码（必须是相应邮箱的stmp授权码）
//邮箱---设置--账户--POP3/SMTP服务---开启---获取stmp授权码

/**
 * 发送邮件的工具函数
 * @param {*} mail 目标邮箱
 * @param {*} subject 标题
 * @param {*} call 状态函数
 */
const sendMail = (mail, subject, code, call) => {
  // 发送的配置项
  let mailOptions = {
    from: `${'MINI-题库'} <${emailOption.auth.user}>`, // 发送方
    to: mail, //接收者邮箱，多个邮箱用逗号间隔
    subject, // 标题
    text: `验证码：${code}，5分钟内有效，请勿泄露或转发他人。` // 文本内容
  }

  //发送函数
  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      call(false)
    } else {
      call(true) //因为是异步 所有需要回调函数通知成功结果
    }
  })
}

module.exports = {
  sendMail
}
